package co.edu.udea.herbario.bl;

import co.edu.udea.herbario.dao.EjemplarDao;
import co.edu.udea.herbario.dto.Ejemplar;
import co.edu.udea.herbario.dao.cnf.FactoryDao;
import java.util.ArrayList;

/**
 * Clase que contiene la validacion del formato de los datos de entrada para obtener la informacion
 * de un ejemplar
 *
 * @author Marcela Colorado
 */
public class InformacionEjemplar
{
    /**
     * Consulta la informacion especifica de ejemplar: familia, genero, especie, subespecie, variedad,
     * autor,determinador, fecha de determinacion, colector, numero de coleccion, fecha de coleccion,
     * pais, departamento, localidad, nombre comun y notas de campo
     *
     * @param idEjem es el identificador del ejemplar del que se desea ver la informacion
     *
     * @return retorna un objeto de tipo Ejemplar
     */

    public Ejemplar obtenerEjemplar(int idEjem)
    {
        //Creacion de un objeto tipo EjemplarDao a traves del FactoryDao
        EjemplarDao ejemplarDao = FactoryDao.obtenerInstancia().getEjemplarDao();
        Ejemplar ejem = null;

        //Validacion de datos de entrada
        if(idEjem != 0)
        {
            try
            {
                //Se obtiene el ejemplar asociado al consecutivo pasado como parametro
                ejem = ejemplarDao.obtenerEjemplar(idEjem);
            }
            catch (NumberFormatException e)
            {
                e.printStackTrace();
            }
        }
        return ejem;
    }

    /**
     * Metodo que obtiene los nombres cientificos que contengan la cadena de caracteres pasada como parametro
     *
     * @param valorBusqueda es la cadena de caracteres que deben contener los nombres cientificos recuperados
     * @return
     */
    public ArrayList obtenerNombresCientificos(String valorBusqueda)
    {
        EjemplarDao ejemplarDao = FactoryDao.obtenerInstancia().getEjemplarDao();
        ArrayList <String> nombresCientificos = null;
        nombresCientificos = (ArrayList<String>) ejemplarDao.obtenerNombresCientificos(valorBusqueda);

        return nombresCientificos;
    }
}
